package br.com.pattern.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.pattern.model.Fornecedor;

public class FornecedorDao extends GenericDao{

	protected FornecedorDao(ConnectionDataBaseGeneric connectionDataBaseGeneric) {
		super(connectionDataBaseGeneric);
	}

	public void salvar(Fornecedor fornecedor){
		String insert = "INSERT INTO fornecedores(cnpj, razao_social, telefone, endereco, contato) VALUES(?,?,?,?,?)";

		save(insert, fornecedor.getCnpj(), fornecedor.getRazao_social(), fornecedor.getTelefone(), fornecedor.getEndereco(), fornecedor.getContato() );
	}

	public void alterar(Fornecedor fornecedor){

		String update = "UPDATE fornecedores SET cnpj=?, razao_social=?, telefone=?," +
				"endereco=?, contato=? WHERE id=?";

		update(update, fornecedor.getCnpj(), fornecedor.getRazao_social(), fornecedor.getTelefone(), fornecedor.getEndereco(), fornecedor.getContato(), fornecedor.getId());
	}

	public void excluir(Fornecedor fornecedor){

		String delete = "DELETE FROM fornecedor WHERE id = ?";

		delete(delete, fornecedor.getId());
	}

	public List<Fornecedor> listaFornecedor(){

		List<Fornecedor> lista = new ArrayList<Fornecedor>();

		String select = "SELECT * FROM fornecedores";

		try{

			PreparedStatement pstmt = getConnection().prepareStatement(select);
			ResultSet rs = pstmt.executeQuery();

			while(rs.next()){
				Fornecedor fornecedor = new Fornecedor();

				fornecedor.setId(rs.getLong("id"));
				fornecedor.setCnpj(rs.getString("cnpj"));
				fornecedor.setRazao_social(rs.getString("razao_social"));
				fornecedor.setTelefone(rs.getString("telefone"));
				fornecedor.setEndereco(rs.getString("endereco"));
				fornecedor.setContato(rs.getString("contato"));

				lista.add(fornecedor);
			}

			rs.close();
			pstmt.close();

		}catch(SQLException e){
			e.printStackTrace();
		}

		return lista;
	}

	public Fornecedor findByRazaoSocial(String nome) {

		String select = "SELECT * FROM fornecedores WHERE razao_social = ?";

		Fornecedor fornecedor = null;

		try{

			PreparedStatement stmt = getConnection().prepareStatement(select);		
			stmt.setString(1, nome);

			ResultSet rs = stmt.executeQuery();		 

			while (rs.next()) {		
				fornecedor = new Fornecedor();

				fornecedor.setId(rs.getLong("id"));
				fornecedor.setCnpj(rs.getString("cnpj"));
				fornecedor.setRazao_social(rs.getString("razao_social"));
				fornecedor.setTelefone(rs.getString("telefone"));
				fornecedor.setEndereco(rs.getString("endereco"));
				fornecedor.setContato(rs.getString("contato"));
			}		 

			rs.close();		
			stmt.close();

		}catch(SQLException e){
			e.printStackTrace();
		}

		return fornecedor;

	}

}
